/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.objetos;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author KOMATSU
 */
public class ProdutoMetodos {
    private Produto produto = new Produto();
    
    private String mensagem = "";
    
    private List listaProdutos = new ArrayList();
    
    private String filtro = "";
    
    /**
     *
     * Metodo Buscar Produtos
     * Pega produtos do banco
     * de acordo com o filtro
     * feito na sql
    */
    
    public void buscarProdutos() {
        Conexao con = new Conexao();
        try {
            
            con.inicia();
            String query = "SELECT * FROM bars.produto WHERE upper(DESCRICAO) like upper('"+filtro+"%') ORDER BY tipo";
            ResultSet rs = con.executa(query);
            listaProdutos.clear();
            while (rs.next()) {
                Produto p = new Produto();
                p.setIdBar(Integer.toString(rs.getInt("idbar")));
                p.setIdProduto(Integer.toString(rs.getInt("idproduto")));
                p.setPreco(rs.getString("preco"));
                p.setDescricao(rs.getString("descricao"));
                p.setTipo(rs.getString("tipo"));
                p.setQdade(Integer.toString(rs.getInt("qtd")));
                listaProdutos.add(p);
            }
            
            rs.close();
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
            System.out.println(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }
    
    /**
     *
     * Metodo Buscar 1 Produto
     * Pega 1 produto do banco
     * @param id - id do produto selecionado
    */
    
    public void buscarProdutoId(String id) {
        Conexao con = new Conexao();
        try {
            
            con.inicia();
            String query = "SELECT * FROM bars.produto WHERE idproduto = "+id+" ORDER BY tipo";
            ResultSet rs = con.executa(query);
            while (rs.next()) {
                Produto p = new Produto();
                p.setIdBar(Integer.toString(rs.getInt("idbar")));
                p.setIdProduto(Integer.toString(rs.getInt("idproduto")));
                p.setPreco(rs.getString("preco"));
                p.setDescricao(rs.getString("descricao"));
                p.setTipo(rs.getString("tipo"));
                p.setQdade(Integer.toString(rs.getInt("qtd")));
                setProduto(p);
            }
            
            rs.close();
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
            System.out.println(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }

    /**
     *
     * Metodo Buscar Produtos
     * cadastra novo produto no banco
    */
    
    
    public void cadastrarProduto() {
        Conexao con = new Conexao();
        try {
            con.inicia();
            String query = "INSERT INTO bars.produto "
            +"VALUES('" + produto.getIdBar() + "','" + produto.getQdade() + "','" + produto.getDescricao()
            +"','" + produto.getTipo() + "','" + produto.getPreco()+ "')";
            con.atualiza(query);
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }
    
    /**
     *
     * Metodo Editar Produtos
     * Atualiza produto existente no banco
    */
    
    public void editarProduto() {
        Conexao con = new Conexao();
        try {
            con.inicia();
            String query = "UPDATE bars.produto"
                    +" SET idbar = "+produto.getIdBar() + ", qtd="+ produto.getQdade() +", descricao ='"+ produto.getDescricao()
                    +"', tipo = '"+ produto.getTipo() +"',preco = '"+ produto.getPreco()+"'"
                    +" WHERE idproduto = "+produto.getIdProduto();
            
            con.atualiza(query);
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }
    
    /**
     *
     * Metodo Remover Produto
     * remove produto existente no banco
    */
    
    public void removerProduto() {
        Conexao con = new Conexao();
        try {
            con.inicia();
            String query = "DELETE FROM bars.produto"
                    +" WHERE idproduto = "+produto.getIdProduto();
            
            con.atualiza(query);
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }
    
    
    public List getListaProdutos() {
        return listaProdutos;
    }

    public void setListaProdutos(List listaProdutos) {
        this.listaProdutos = listaProdutos;
    }

    public String getMensagem() {
        return mensagem;
    }

    public void setMensagem(String mensagem) {
        this.mensagem = mensagem;
    }

    public Produto getProduto() {
        return produto;
    }

    public void setProduto(Produto produto) {
        this.produto = produto;
    }

    public String getFiltro() {
        return filtro;
    }

    public void setFiltro(String filtro) {
        this.filtro = filtro;
    }
    
}
